package com.langfeiyes.pattern.observer.demo;

import java.util.ArrayList;
import java.util.List;

/**
 * 目标对象(被观察者)
 */
public class Subject {
    //观察者(订阅者)集合
    private List<Observer> observerList = new ArrayList<>();


    //添加观察者(订阅者)
    public void attach(Observer observer){
        observerList.add(observer);
    }

    //删除观察者(订阅者)
    public void detach(Observer observer){
        observerList.remove(observer);
    }


    //通知所有观察者(订阅者)，并回调它们暴露update方法，实现同步更新
    public void notifyObservers(){
        for (Observer observer : observerList) {
            observer.update(this);
        }
    }
}
